One of roles of a TCP (Transmission Control Protocol) in a transport layer is to ensure reliability of packet communication. Packet retransmission control by the TCP is known as a technique for ensuring the reliability of the packet communication.
More specifically, a transmitting device transmits a packet to a receiving device, and the receiving device, when receiving the packet, sends an ACK packet (acknowledgement packet) back to the transmitting device. With reception of the ACK packet, the transmitting device recognizes that the transmitted packet has arrived at the receiving device without any trouble. However, if a packet is dropped in a network between the transmitting device and the receiving device, for example, the transmitting device fails to receive an ACK packet responding to the packet. If the transmitting device does not receive the ACK packet in a predetermined waiting time after transmission of the packet, it retransmits the packet to the receiving device. Note that the predetermined waiting time mentioned above is referred to as a retransmission time out (RTO).
According to Non-Patent Literature 1, the packet retransmission control is performed in a MAC (Media Access Control) layer lower than the transport layer. The reason for this is as follows. As an example, let us consider a network having a very short round trip time (RTT), such as a network inside a data center. In such a network, it is possible by reducing the retransmission time out to the order of microseconds to reduce a flow completion time (FCT) to improve communication efficiency. However, since the TCP is in general implemented in an OS (operating system), the packet retransmission control by the TCP cannot reduce the retransmission time out to the order of microseconds. For example, unit times (Jiffies) in Linux are 10 milliseconds, and therefore a standard TCP of the Linux cannot reduce the retransmission time out to less than 10 milliseconds. In order to solve such a problem, according to Non-patent literature 1, the packet retransmission control is performed in the MAC layer to thereby reduce the retransmission time out.
Moreover, the TCP has a function of “fast retransmission control” that is faster than the RTO-based packet retransmission control. The fast retransmission control of the TCP is described with reference to FIG. 1. A transmitting device sequentially transmits packets PKT1 to PKT5. In response to receipt of the packet PKT1, a receiving device sends back an ACK packet ACK1. Upon receipt of the next packet PKT2, the receiving device recognizes from a sequence number of the packet PKT2 that the received packet PKT2 is an In-Order packet, and sends back a next ACK packet ACK2. It is assumed here that the packet PKT3 is dropped. The receiving device receives the packets PKT4 and PKT5 and determines, based on the sequence numbers of them, that the received packets are Out-of-Order packets. In this case, the receiving device sends back the previous ACK packet ACK2. As a result, the transmitting device redundantly receives the same ACK packet ACK2. If the transmitting device receives such a redundant ACK packet for a predetermined number of times (e.g. three times), the transmitting device determines that a packet drop has occurred, and retransmits the packet PKT3 without waiting for the retransmission time out. This is the fast retransmission control by the TCP.